A curated list of resources about WordPress as a headless CMS with
          Gatsby as a Static Site Generator (SSG).
        
      
      
     
    
      A headless CMS is a back-end only content management
      system (CMS). Its purpose is to serve content and make it accessible via
      an API (e.g. REST or GraphQL).
    
    
      A Static Site Generator (SSG) is a framework or setup,
      that helps you to generate static websites (HTML/CSS/JS). The source of
      your data can be anything from local files (e.g. text files or markdown)
      to APIs (e.g. REST, GraphQL).
    
    
    Why Gatsby and WordPress?
    
      WordPress is one of the most used CMS in the world and
      therefore many people already know how to work with it. The typical
      front-end approach with PHP-based templates is getting more and more
      problematic in an environment where performance is key. The approach to
      use WordPress as a headless CMS with normal API calls through JavaScript
      already exists, but also has the downside of having to make requests to
      the server and rendering depending on the response. This adds time to
      load.
      Gatsby instead, pre-renders the whole site at compile time
      and therefore the user gets a
      fully prepared static site on their first request, making
      it one of the best approaches for performance. Another
      huge benefit is security, as your WordPress instance can
      be anywhere, even locally and you don’t need to expose any of it to the
      user.
      The static Gatsby site therefore, is not hackable. Find
      further arguments for pros and cons in the resources below.
    
    Contents
    
    
    Communities
    
      If you need help with anything, there are some highly active communities.
    
    
      WPGraphQL -
      Slack Chat -
      Spectrum Chat -
      Twitter
    
    
      Gatsby -
      Discord Chat -
      Reddit -
      Stack Overflow
    
    Articles and Talks
    
      List of articles and talks that elaborate on the technology stack in
      general.
    
    
    Plugins
    
      List of useful plugins to make WordPress and Gatsby work together. Ordered
      alphabetically.
    
    WordPress
    Essential Plugins
    
      - 
        WPGraphQL -
        Documentation - WPGraphQL
        brings the power of GraphQL to your WordPress site.
      
 
      - 
        WPGatsby - This
        plugin configures your WordPress site to be an optimized source for
        Gatsby.
      
 
    
    WPGraphQL Extensions
    
      - 
        WPGraphQL Cors
        - This FREE plugin from
        @kidunot89 and
        @byfunkhaus claims
        to enable authentication with WPGraphQL to “just work” by allowing you
        to set CORS headers that GraphQL will accept, which means WordPress
        default auth cookies can be accepted.
      
 
      - 
        Total Counts for WPGraphQL
        - This FREE plugin from
        @builtbycactus
        exposes total counts to connections in the WPGraphQL Schema.
      
 
      - 
        WPGraphQL Gutenberg
        - Exposes Gutenberg blocks to the WPGraphQL API.
      
 
      - 
        WPGraphQL JWT Authentication
        - Extends the WPGraphQL plugin to provide authentication using JWT (JSON
        Web Tokens).
      
 
      - 
        WPGraphQL Lock
        - Enables query locking for WPGraphQL by implementing persisted GraphQL
        queries.
      
 
      - 
        WPGraphQL Meta
        - This FREE plugin from
        @robertorourke
        exposes meta registered via the WordPress register_meta API to
        WPGraphQL.
      
 
      - 
        WPGraphQL Meta Query
        - Adds Meta_Query support to the WPGraphQL Plugin for postObject query
        args.
      
 
      - 
        WPGraphQL Persisted Queries
        - This FREE plugin from
        @qz adds the ability to
        use Persisted Queries with WPGraphQL.
      
 
      - 
        WPGraphQL Offset Pagination
        - This FREE plugin from
        @enshrined adds
        basic offset pagination as opposed to the standard Cursor based
        pagination that ships with WPGraphQL.
      
 
      - 
        WPGraphQL Send Email
        - This FREE plugin from
        @Ash_Hitchcock
        allows you to send emails via a simple mutation. Includes the abilitty
        to restrict sending to trusted origins.
      
 
    
    
    Extensions for that use other plugins with WPGraphQL
    
      - 
        QL Search - An
        extension that integrates SearchWP into WPGraphQL.
      
 
      - 
        WPGraphQL Content Blocks
        - This FREE plugin from the folks at QZ.com exposes a way to query HTML
        content from WordPress Posts and Pages as “Blocks” (not related to
        Gutenberg) to bring more structure to your queried content.
      
 
      - 
        WPGraphQL Enable All Post Types (DalkMania)
        - This FREE plugin from
        @DalkMania
        automatically adds ALL registered post types to the WPGraphQL Schema.
      
 
      - 
        WPGraphQL Enable All Post Types (TylerBarnes)
        - This FREE plugin from
        @tylbar automatically
        adds ALL registered post types to the WPGraphQL Schema.
      
 
      - 
        WPGraphQL Google Schema
        - This FREE plugin from
        @izzygld261 adds
        Google Schema support to WPGraphQL.
      
 
      - 
        WPGraphQL Gutenberg ACF
        - Exposes ACF blocks through GraphQL
      
 
      - 
        WPGraphQL MB (MetaBox)
        - This FREE plugin from
        @DalkMania adds all
        registered metaboxes using
        metabox.io to the WPGraphQL Schema.
      
 
      - 
        WPGraphQL MetaBox Relationships
        - This FREE plugin from
        @hsimah adds support
        for the metabox.io Relationships field
        to WPGraphQL (when also using his wp-graphql-metabox plugin).
      
 
      - 
        WPGraphQL Polls
        - This FREE plugin from
        @andrenosouza
        allows you to interact with data from the WP-Polls plugin via GraphQL
        Queries and Mutations.
      
 
      - 
        WPGraphQL Polylang Extension
        - Extends WPGraphQL schema with language data from the Polylang plugin.
      
 
      - 
        WPGraphQL Tax Query
        - Adds Tax_Query support to the WPGraphQL Plugin for postObject query
        args (WP_Query).
      
 
      - 
        WPGraphQL WPML
        - This FREE plugin from
        @rburgst extends the
        WPGraphQL schema with language data from the WPML plugin. In addition it
        turns off WPML default filters in order to be able to iterate over all
        posts regardless of language.
      
 
      - 
        WPGraphQL for Advanced Custom Fields
        - Exposes Advanced Custom Fields to the WPGraphQL Schema.
      
 
      - 
        WPGraphQL for BuddyPress
        - This FREE plugin from
        @RenatoNascAlves
        exposes BuddyPress data to WPGraphQL.
      
 
      - 
        WPGraphQL for Carbon Fields
        - This FREE plugin from
        @matepaiva exposes
        fields registered using Carbon Fields to the WPGraphQL Schema.
      
 
      - 
        WPGraphQL for Custom Post Type UI
        - This FREE plugin adds settings to Custom Post Type UI allowing you to
        set which Post Types and Taxonomies registered by CPTUI should display
        in the WPGraphQL Schema.
      
 
      - 
        WPGraphQL for FacetWP
        - This FREE plugin from
        @hsimah exposes
        filters on WPGraphQL queries to allow for faceted search with FacetWP.
      
 
      - 
        WPGraphQL for Gravity Forms
        - This FREE plugin from
        @KellenMace of
        @harness_up
        exposes
        @gravityforms
        data to WPGraphQL, allowing you to query for forms, fields, entries, and
        more.
      
 
      - 
        WPGraphQL for Metabox
        - This FREE plugin from
        @hsimah exposes fields
        registered using the popular http://MetaBox.io to the WPGraphQL Schema.
      
 
      - 
        WPGraphQL for Ninja Forms
        - This free plugin exposes forms created by the Ninja Forms plugin to
        the WPGraphQL Schema and allows for the forms to be submitted via
        GraphQL Mutations.
      
 
      - 
        WPGraphQL for Posts 2 Posts
        - This FREE plugin from
        @KellenMace of
        @harness_up
        automatically creates GraphQL connections for all of your Posts 2 Posts
        connections.
      
 
      - 
        WPGraphQL for SEOPress
        - This FREE plugin from
        @moon_meister
        exposes data managed by SEOPress to the WPGraphQL Schema, allowing for
        SEO data to be used in your headless applications.
      
 
      - 
        WPGraphQL for WooCommerce
        - This FREE plugin exposes WooCommerce data to WPGraphQL allowing you to
        interact with your store’s data via GraphQL Queries and mutations.
      
 
      - 
        WPGraphQl Yoast SEO Plugin
        - Exposes Yoast SEO data to the WPGraphQL Plugin.
      
 
    
    Other helpful Plugins
    
      - 
        Advanced Custom Fields
        - ACF PRO
      
 
      - 
        Headless Mode
        - Headless mode sets up a redirect for all users trying to access the
        site. The only requests that are granted admission are ones that are
        either trying to access the REST API, the WP GraphQL API, or any
        logged-in user looking to access the headless install to edit or create
        posts.
      
 
      - Polylang
 
      - 
        WP JAMstack Deployments
        - WordPress plugin for JAMstack deployments on Netlify (and other
        platforms).
      
 
    
    Gatsby Plugins
    
    Free Tutorials / Courses
    
      Note: Since the release of gatsby-source-wordpress V4, it
      is the preferred over gatsby-source-graphql and therefore I will only list
      tutorials related to that approach.
    
    Written Tutorials
    
    Video Tutorials
    
      - 
        2019.11:
        25+ Videos - Gatsby + WordPress (2019) Complete Course
        - The series focuses on how we can use WordPress as a headless CMS with
        a GraphQL schema to interface with. After setting up our WordPress site
        and theme, we’ll move onto Gatsby and how we can use our new schema to
        generate content for our Gatsby site, programmatically generating pages,
        converting Gutenberg blocks to React components and finishing off the
        chapter with a focus on SEO in Gatsby.
      
 
      - 
        2019.07:
        Gatsby + WordPress with WPGraphQL (with Jason Bahl) — Learn With
          Jason
        - In this stream, Jason Bahl teaches how to use WordPress with Advanced
        Custom Fields and WPGraphQL to create an powerful, flexible admin
        dashboard, then query and display that data in a Gatsby site.
      
 
      - 
        2019.07:
        Crash Course: Headless WordPress with WPGraphQL, ACF, and React
        - In this video, Alex Young (WPCasts) goes over how to get a simple
        headless WordPress setup with WPGraphQL and React.
      
 
      - 
        2019.06:
        Using WordPress with WPGraphQL
        - In this video you will learn how to use GraphQL with WordPress using
        an awesome plugin named WPGraphQL and some extra cool stuff like GraphQL
        + Advanced Custom Fields.
      
 
      - 
        2019.04:
        WPGraphQL for ACF
        - Jason Bahl shows how to use WPGraphQL for Advanced Custom Fields.
      
 
      - 
        2018.07:
        GraphQL with WordPress and Gutenberg - Jason Bahl - 2018 JavaScript
          for WordPress Conference
        - In this talk from the 2018 JavaScript for WordPress Conference, the
        Developer of the WP GraphQL Plugin, Jason Bahl, gives updated examples
        of how you can use GraphQL with WordPress and Gutenberg.
      
 
    
    Paid Tutorials / Courses
    List of paid courses.
    
      - 
        2021.01:
        Building a Headless WordPress Site with Gatsby
        - This course is a step-by-step walk through using
        gatsby-source-wordpress plugin to create a fully functional headless
        Gatsby WordPress site with posts, pages, categories, tags, post
        navigation and other features.
      
 
    
    Starters
    List of project starters, that you can clone and start building upon.
    
    Themes
    
      List of gatsby-themes that work with WordPress as a source, which you can
      use in your Gatsby setup.
    
    
      - 
        Twenty Nineteen Gatsby Theme
        - A port of the Twenty Nineteen WordPress Theme over to Gatsby.
      
 
      - 
        Gatsby WordPress Publisher Theme
        - The Gatsby Publisher Theme allows you to create a headless (or
        decoupled) WordPress site. This theme will display all of your pages and
        posts in a static front-end built on React and Gatsby.
      
 
    
    Contribute
    
      Contributions welcome! Read the
      contribution guidelines first.
    
    License
    
      
    
    
      To the extent possible under law, Henrik Wirth has waived all copyright
      and related or neighboring rights to this work.